package pig.model;

import java.util.HashMap;
import java.util.List;

import javax.annotation.Resource;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.stereotype.Repository;

@Repository
public class CommonDAOImpl implements CommonDAO{
	
	@Resource(name="sqlSessionTemplate")
	private SqlSessionTemplate sqlSessionTemplate;
	
	// 구매자 로그인
	@Override
	public CustomerVO customerLogin(String id,String password) {
		HashMap<String,String> map=new HashMap<String,String>();
		map.put("id",id );
		map.put("password", password);
		return sqlSessionTemplate.selectOne("common.customerLogin",map);
		
	}
	
	// 판매자 로그인
	@Override
	public SellerVO sellerLogin(String id,String password) {
		HashMap<String,String> map=new HashMap<String,String>();
		map.put("id",id );
		map.put("password", password);
		return sqlSessionTemplate.selectOne("common.sellerLogin",map);
		
	}
	
	// 구매자 아이디 찾기 메서드
	@Override
	public String findCustomerId(String name, String email) {
		HashMap<String,String> map=new HashMap<String,String>();
		map.put("name",name );
		map.put("email", email);
		return sqlSessionTemplate.selectOne("common.findCustomerId",map);		
	}

	// 판매자 아이디 찾기 메서드
	@Override
	public String findSellerId(String name, String email) {
		HashMap<String,String> map=new HashMap<String,String>();
		map.put("name",name );
		map.put("email", email);
		return sqlSessionTemplate.selectOne("common.findSellerId",map);		
	}
	
	// 구매자 암호 찾기 메서드
	@Override
	public String findCustomerPassword(String id,String email) {
		HashMap<String,String> map=new HashMap<String,String>();
		map.put("id",id);
		map.put("email", email);
		return sqlSessionTemplate.selectOne("common.findCustomerPassword",map);
	}
	
	// 판매자 암호 찾기 메서드
	@Override
	public String findSellerPassword(String id,String email) {
		HashMap<String,String> map=new HashMap<String,String>();
		map.put("id",id);
		map.put("email", email);
		return sqlSessionTemplate.selectOne("common.findSellerPassword",map);
	}
	
	// 상품명으로 상품 찾기 메서드
	@Override
	public List<DealVO> findDealByTitle(String dealName) {
		return sqlSessionTemplate.selectList("common.findDealByTitle",dealName);
	}

	// 모든 상품 리스트 메서드
	@Override
	public List<DealVO> findAllDeal() {
		return sqlSessionTemplate.selectList("common.findAllDeal");
	}

	//  상품번호로 상품정보를 찾는 메서드
	@Override
	public DealVO findDealByNumber(String dealNumber) {
		return sqlSessionTemplate.selectOne("common.findDealByNumber",dealNumber);
	}

	// 모든 상품 리스트 찾기
	@Override
	public List<DealVO> findAllDealList() {
		return sqlSessionTemplate.selectList("common.findAllDealList");
	}
	
	// 카테고리별로 상품 찾기
	@Override
	public List<DealVO> dealListByCategory(String category) {
		return sqlSessionTemplate.selectList("common.dealListByCategory",category);
	}

	//카테고리 (마감순) 상품 찾기
	@Override
	public List<DealVO> findDealByEndDate(String category) {
		return sqlSessionTemplate.selectList("common.findDealByEndDate",category);
	}

	// 카테고리 (등록순) 상품 찾기
	@Override
	public List<DealVO> findDealByRegisterDate(String category) {
		return sqlSessionTemplate.selectList("common.findDealByRegisterDate",category);
	}
	
	//카테고리 (가격높은순) 상품 찾기
	@Override
	public List<DealVO> findDealByHighPrice(String category) {
		return sqlSessionTemplate.selectList("common.findDealByHighPrice",category);
	}
	
	// 카테고리 (가격낮은순)
	@Override
	public List<DealVO> findDealByLowPrice(String category) {
		return sqlSessionTemplate.selectList("common.findDealByLowPrice", category);
	}

	// 관리자에게 쪽지 보내기
	@Override
	public void postMessage(PostBoxVO postBoxVO) {
		sqlSessionTemplate.insert("common.sendMessage",postBoxVO);
	}

	// 쪽지함 보기
	@Override
	public List<PostBoxVO> postShowSendList(String pageNo,String id, String auth) {
		HashMap<String,String> map=new HashMap<String,String>();
		map.put("senderId", id);
		map.put("authNumber", auth);
		map.put("pageNo", pageNo);
		List<PostBoxVO> list=sqlSessionTemplate.selectList("common.postShowSendList",map);
		return list;
	}
	
	// 받은 쪽지함 리스트 
	@Override
	public List<PostBoxVO> postShowReceiveList(String pageNo,String id, String auth) {
		HashMap<String,String> map=new HashMap<String,String>();
		map.put("receiverId", id);
		map.put("authNumber", auth);
		map.put("pageNo",pageNo);
		return sqlSessionTemplate.selectList("common.postShowReceiveList",map);
	}
	
	// 쪽지상세 보기
	@Override
	public PostBoxVO postShowContent(int postNumber) {
		return sqlSessionTemplate.selectOne("common.postShowContent",postNumber);
	}
	
	// 쪽지상세보기체크
	@Override
	public void postShowContentCheck(int postNumber) {
		sqlSessionTemplate.update("common.postShowContentCheck",postNumber);
	}
	
	// 보낸 쪽지함 삭제
	@Override
	public void postSendDeleteCheck(int deleteOk, int postNumber) {
		HashMap<String,Integer> map=new HashMap<String,Integer>();
		map.put("senderDeleteCheck", deleteOk);
		map.put("postNumber", postNumber);
		sqlSessionTemplate.update("common.postSendDeleteCheck",map);
	}
	
	// 받은 쪽지함 삭제
	@Override
	public void postReceiveDeleteCheck(int deleteOk, int postNumber) {
		HashMap<String,Integer> map=new HashMap<String,Integer>();
		map.put("receiverDeleteCheck", deleteOk);
		map.put("postNumber", postNumber);
		sqlSessionTemplate.update("common.postReceiveDeleteCheck",map);
	}
	
	// 쪽지 삭제
	@Override
	public void deletePost(int postNumber) {
		sqlSessionTemplate.delete("common.postDelete",postNumber);
	}
	
	//qna
	//게시물 List 가져오기
	@Override
	public List<BoardVO> getQNAList(String pageNo,String dealNumber) {
		HashMap map = new HashMap();
		map.put("pageNo", pageNo);
		map.put("dealNumber", dealNumber);
		return sqlSessionTemplate.selectList("board.getBoardList", map);
	}
	
	// 카테고리별  게시물
	@Override
	public int totalContentByDeal(String dealNumber) {
		return sqlSessionTemplate.selectOne("board.totalContentByDeal",dealNumber);
	}
	
	// qna 게시물 등록
	@Override
	public void write(BoardVO bvo) {
		sqlSessionTemplate.insert("board.write",bvo);
	}
	
	// qna 컨텐츠 내용 보기
	@Override
	public BoardVO showContent(int no) {
		return (BoardVO)sqlSessionTemplate.selectOne("board.showContent",no);
	}
	
	// 조회수 증가
	@Override
	public void updateCount(int no) {
		sqlSessionTemplate.update("board.updateCount",no);
	}
	
	//restep 변경
	@Override
	public void updateRestep(int ref, int restep) {
		BoardVO vo = new BoardVO();
		vo.setRef(ref);
		vo.setRestep(restep);
		sqlSessionTemplate.update("board.updateRestep",vo);
	}
	
	// 답글 작성
	@Override
	public void replyWrite(BoardVO bvo) {
		sqlSessionTemplate.insert("board.replyWrite",bvo);
	}
	
	//글을 삭제
	@Override
	public void deleteBoard(String no) {
		sqlSessionTemplate.delete("board.deleteBoard", no);
	}
	
	// 글 수정
	@Override
	public void updateBoard(BoardVO bvo) {
		sqlSessionTemplate.update("board.updateBoard", bvo);
	}
	
	// 전체 보낸 쪽지 수
	@Override
	public int sendPostTotal(String id, String auth) {
		HashMap map = new HashMap();
		map.put("id", id);
		map.put("authNumber", auth);
		return sqlSessionTemplate.selectOne("common.sendPostTotal",map);
	}
	
	// 전체 받은 쪽지 수
	@Override
	public int receiverPostTotal(String id, String auth) {
		HashMap map = new HashMap();
		map.put("id", id);
		map.put("authNumber", auth);
		return sqlSessionTemplate.selectOne("common.receivePostTotal",map);
	}
}
